/**
 * Copyright (C), 2020, 安徽贝慕信息科技有限公司
 * FileName: ResourceCenterController
 * Author:   Allen
 * Date:     2020/8/27 18:45
 * Description: 资源中心服务处理Controller
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.bim.marvel.rest;

import com.bim.marvel.openapi.client.dto.ResourceCenterDTO;
import com.bim.marvel.openapi.client.dto.ResourceCenterNotDescriptionDTO;
import com.bim.marvel.openapi.client.query.ResourceCenterQuery;
import com.bim.marvel.common.core.model.dto.SimpleVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;
import java.util.List;

/**
 * 〈资源中心服务处理Controller〉
 *
 * @author Allen
 * @date 2020/8/27
 * @since 1.0.0
 */
@Api(tags = {"资源中心服务处理-controller"})
@RequestMapping("/api/resource/center")
public interface ResourceCenterController {
    /**
     * 根据ID获得资源中心服务信息请求URL
     */
    String GET_RESOURCE_CENTER_URL = "/byId/{id}";
    /**
     * 获得资源中心服务列表请求URL
     */
    String GET_TREE_RESOURCE_CENTER_URL = "/getTree";

    /**
     * 保存资源中心服务信息请求URL
     */
    String RESOURCE_CENTER_SAVE_URL = "/save";

    /**
     * 更新资源中心服务信息请求URL
     */
    String RESOURCE_CENTER_UPDATE_URL = "/update";

    /**
     * 保存资源中心服务信息
     * @param resourceCenterQuery 资源中心服务信息入参
     * @return 保存结果
     */
    @ApiOperation(value = "保存资源中心服务信息", notes = "保存资源中心服务信息",
            protocols = "http,https", httpMethod = "POST")
    @PostMapping(value = RESOURCE_CENTER_SAVE_URL, consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE},
            produces = {MediaType.APPLICATION_JSON_VALUE})
    SimpleVO<Boolean> saveResourceCenter(@Valid ResourceCenterQuery resourceCenterQuery);

    /**
     * 更新资源中心服务信息
     * @param resourceCenterQuery 资源中心服务信息入参
     * @return 更新结果
     */
    @ApiOperation(value = "更新资源中心服务信息", notes = "更新资源中心服务信息",
            protocols = "http,https", httpMethod = "POST")
    @PostMapping(value = RESOURCE_CENTER_UPDATE_URL, consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE},
            produces = {MediaType.APPLICATION_JSON_VALUE})
    SimpleVO<Boolean> updateResourceCenter(@Valid ResourceCenterQuery resourceCenterQuery);


    /**
     * 得到资源中心服务列表(由于资源中心是以菜单树形结构展示，故而无须分页)
     * @return 资源中心服务列表
     */
    @ApiOperation(value = "得到资源中心服务列表", notes = "得到资源中心服务列表",
            protocols = "http,https", httpMethod = "GET")
    @GetMapping(value = GET_TREE_RESOURCE_CENTER_URL, produces = {MediaType.APPLICATION_JSON_VALUE})
    SimpleVO<List<ResourceCenterNotDescriptionDTO>> getResourceCenterList();

    /**
     * 根据ID获得资源中心服务信息
     * @param id 资源ID
     * @return 获得资源中心服务信息
     */
    @ApiOperation(value = "根据ID获得资源中心服务信息", notes = "根据ID获得资源中心服务信息",
            protocols = "http,https", httpMethod = "GET")
    @GetMapping(value = GET_RESOURCE_CENTER_URL, produces = {MediaType.APPLICATION_JSON_VALUE})
    SimpleVO<ResourceCenterDTO> getAppDetail(@PathVariable(value = "id") String id);
}
